 /*
    Speedbump aka Project Kimbula
    Copyright (C) 2010  Ping Shin Ching

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see http://www.gnu.org/licenses.

	Ping Shin Ching
	righteous.ninja@gmail.com OR ping_sc@hotmail.com
	More information at http://www.tidytutorials.com/p/speedbump.html
 */

#ifndef headerhandler_h
#define headerhandler_h

//#include "httphandler.h"
#include "headerhandlerinterface.h"


#define HEADER_HEADER_SIZE			128
#define HEADER_NULL_HEADER			"NULL-HEADER"

#define HEADER_REQLINE_CONNECT			"CONNECT "
#define HEADER_REQLINE_CONNECTOK		"Connection Established"

typedef struct{
	char header [HEADER_HEADER_SIZE];
	char * value;
}Header;


class HeaderHandler : public HeaderHandlerInterface{
	Header* headers;
	int noofheaders;
	char* requestline;

public:
	HeaderHandler();
	~HeaderHandler();
	int DecodeHeaders(const char*,int);
	void DisplayHeaders();
	void FreeHeaders();
	int SerializedHeaderSize();
	int SerializeHeaders( char*, unsigned int*);
	int AddHeader( const char*, const char*);
	int RemoveHeader( const char*);
	const char* GetHeader(const char*);
	Header* findHeader( const char* header);
	void RecutRequestLine();
	short IsConnect();

	const char* GetRequestLine() const;
	int SetRequestLine(const char*);
};
#endif
